package com.czm.art_light.mapper;

import com.czm.art_light.entity.ArtStatistics;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 作品统计信息 Mapper 接口
 */
@Mapper
public interface ArtStatisticsMapper {
    /**
     * 根据艺术画作品ID查询该作品统计信息
     */
    ArtStatistics getByWorkId(@Param("workId") Integer workId);

    /**
     * 初始化作品统计信息
     */
    void insert(ArtStatistics artStatistics);

    /**
     * 作品点击量+1
     */
    void incrementViewCountByWorkId(@Param("workId") Integer workId);

    /**
     * 作品下载量+1
     *
     * @return
     */
    int incrementDownloadCountByWorkId(@Param("workId") Integer workId);

    /**
     * 作品分享量+1
     *
     * @return
     */
    int incrementShareCountByWorkId(@Param("workId") Integer workId);

    /**
     * 作品喜欢量+1
     *
     * @return
     */
    int incrementLikeCountByWorkId(@Param("workId") Integer workId);

    /**
     * 作品喜欢量-1
     *
     * @return
     */
    int decrementLikeCountByWorkId(@Param("workId") Integer workId);

    /**
     * 作品的点击量加+1，如果表中也存在，则在原来的点击量上+1，防止新增一条数据关于该作品的添加数据，点击量设置为1，其他的默认
     * 使用 INSERT ... ON DUPLICATE KEY UPDATE 语句
     * 更新插入：一种数据库操作，如果记录已存在，则更新记录；如果记录不存在，则插入新记录。
     */
    void upsertViewCount(Integer workId);
}
